{ "cells": [ { "cell_type": "markdown", "id": "dd7a2a4c-db46-4f2b-814f-c51a9d7f90fe", "metadata": {}, "source": [ "### Getting to grips with linear models in Python - Exercises & Answers" ] }, { "cell_type": "markdown", "id": "9e633e37-cd01-4863-af66-2c1fac696ad8", "metadata": {}, "source": [ "## 1. Basic statistics with `pingouin`\n", "First, lets get comfortable with some basic statistics in Python using `pingouin`, so we're on familiar ground before we dive into the GLM.\n", "\n" ] }, { "cell_type": "markdown", "id": "1abe6991-38d5-4d4e-8efa-5ac384e0f57b", "metadata": {}, "source": [ "### a. Importing everything we need\n", "You will need a few things to answer the exercises, so its good practice to import most things you will need here.\n", "- Import `pandas`, `pingouin`, `statsmodels.formula.api` and `seaborn`." ] }, { "cell_type": "code", "execution_count": 1, "id": "3c9f0bdf-66ed-4d38-971c-2f174d4fe2e6", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# Your answer here\n", "# Import libraries with their usual imports\n", "import pandas as pd\n", "import pingouin as pg\n", "import statsmodels.formula.api as smf\n", "import seaborn as sns\n", "\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "markdown", "id": "ced7ae25-efee-406d-88e1-0ffb776d7dcc", "metadata": {}, "source": [ "### b. Loading some data\n", "We will apply the usual statistical approaches with an interesting dataset called `affairs`. This dataset comprises a survey of married people who report the number of affairs they have had, along with several other attributes. \n", "\n", "The variables are summarised here, and more detail can be found [here](https://vincentarelbundock.github.io/Rdatasets/doc/AER/Affairs.html)\n", "- `affairs` - the number of instances of extramarital sex in the last year.\n", "- `gender`\n", "- `age` \n", "- `yearsmarried`\n", "- `children` - yes/no\n", "- `religiousness` - degree of religiosity, higher numbers being more religious.\n", "- `edudcation` - codes level of education (9 = grade school, 20 = PhD, and more in between).\n", "- `occupation` - occupation coding according to a classification system called the Hollingshead.\n", "- `rating` - self report of marital happiness (1 = very unhappy, 5 = very happy).\n", "\n", "We'll use some basic approaches to test some hypotheses in this dataset. First, read it into a dataframe called `affairs` from the following link, and examine the top 5 rows:\n", "\n", "https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv" ] }, { "cell_type": "code", "execution_count": 2, "id": "c77c8d98-a241-4ee6-a648-858587a8f9eb", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rownamesaffairsgenderageyearsmarriedchildrenreligiousnesseducationoccupationrating
040male37.010.00no31874
150female27.04.00no41464
2110female32.015.00yes11214
3160male57.015.00yes51865
4230male22.00.75no21763
\n", "
" ], "text/plain": [ " rownames affairs gender age yearsmarried children religiousness \\\n", "0 4 0 male 37.0 10.00 no 3 \n", "1 5 0 female 27.0 4.00 no 4 \n", "2 11 0 female 32.0 15.00 yes 1 \n", "3 16 0 male 57.0 15.00 yes 5 \n", "4 23 0 male 22.0 0.75 no 2 \n", "\n", " education occupation rating \n", "0 18 7 4 \n", "1 14 6 4 \n", "2 12 1 4 \n", "3 18 6 5 \n", "4 17 6 3 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Your answer here\n", "# Read in data show top 5\n", "affairs = pd.read_csv('https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv')\n", "affairs.head()" ] }, { "cell_type": "markdown", "id": "13f6773c-633d-4efc-b4ff-c8bd5e1e4fc9", "metadata": {}, "source": [ "### c. Using correlation to test relationships\n", "Conduct a correlation to test whether there is an association between self-reported marital happiness is associated with number of affairs. What is your prediction on the direction? \n", "\n", "Conduct a correlation with `pingouin`." ] }, { "cell_type": "code", "execution_count": 3, "id": "8190ab0a-73fd-4b11-a28f-b96310c6256e", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nrCI95%p-valBF10power
pearson601-0.279512[-0.35, -0.2]3.002385e-121.796e+091.0
\n", "
" ], "text/plain": [ " n r CI95% p-val BF10 power\n", "pearson 601 -0.279512 [-0.35, -0.2] 3.002385e-12 1.796e+09 1.0" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# Correlation\n", "cor = pg.corr(affairs['affairs'], affairs['rating'])\n", "display(cor)" ] }, { "cell_type": "markdown", "id": "9de47229-5065-4f9f-8012-4e0fe11649e2", "metadata": {}, "source": [ "### d. Using t-tests to examine differences\n", "Does the presence of children impact marital satisfaction? Use a t-test in `pingouin` to examine whether satisfaction differs between marriages with and without children.\n", "\n", "If it is significant, calculate the averages between the groups to see what the differences are. Use seaborn to make a plot of the ratings between the two groups." ] }, { "cell_type": "code", "execution_count": 4, "id": "d5c9acb5-b38d-429c-a448-77f22126c2b9", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Tdofalternativep-valCI95%cohen-dBF10power
T-test-5.16501350.918173two-sided4.039127e-07[-0.66, -0.3]0.442913.383e+040.998312
\n", "
" ], "text/plain": [ " T dof alternative p-val CI95% cohen-d \\\n", "T-test -5.16501 350.918173 two-sided 4.039127e-07 [-0.66, -0.3] 0.44291 \n", "\n", " BF10 power \n", "T-test 3.383e+04 0.998312 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rating
children
no4.274854
yes3.795349
\n", "
" ], "text/plain": [ " rating\n", "children \n", "no 4.274854\n", "yes 3.795349" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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88wze2EkAGAg2+s4WbRoUd7znvfka1/72kte39DQIE4AgFesR3tOkuSnP/3pS17/hz/8oXcmAgAGtB5/lHjSpEkvefnkyZNf8TAAAHu15+Sxxx7L/PnzU6vV0tbWlg9/+MO7Xd/W1pZhw4bVZUAAYGDZqzg5/PDDc9ppp2Xr1q355S9/+Ud7T1paWjJlypS6DAgADCx7fczJhz70oSTJG9/4Rge+AgB10+PvOTnzzDNz3333ZePGjanVakmSnTt3ZvXq1bnssst6fUAAYGDpcZx87nOfy3e/+90ccMABSZKurq4888wzefvb397rwwEAA0+P42Tp0qW54YYb0t7enltvvTVXXHFFrrzyyjz77LP1mA8AGGB6HCft7e057rjj8tRTT+XBBx9MQ0NDZs2aldNPP70e8wEAA0yPv+fk4IMPzubNmzNixIhs2LAhO3fuzODBg9PW1laP+QCAAabHe05OPfXUnHfeefn2t7+dE044IfPmzcugQYNyxBFH1GE8AGCg6fGek2effTZnnHFG9ttvv8yfPz9bt27No48+mssvv7we8wEAA0yP95z86Ec/yr333pvm5ua85jWvyeLFi+sxFwAwQPU4TqZPn57LL788Z511VkaMGJGGhoZd140aNapXhwMABp4ex8l1112XJPne9763K0xqtVoaGhry61//unenAwAGnB7HyU9+8pN6zAEAkGQf4uTQQw+txxwAAEn24dM6AAD1JE4AgKJUEicPP/xwZs6cmUmTJuWkk07KpZdemi1btlQxCgBQmD6Pkx07duSCCy7I8ccfn3vuuSe33XZbtm3blnnz5vX1KABAgXp8QOwrtX79+owdOzYf//jH09TUlJaWlpx77rm59NJLe7Sdrq6uOk34vKamprpuH/qzeq+/erO+4eXVa333ZLt9HidHHnnkH32r7LJly3Lsscf2aDurVq3qzbF2M2TIkBxzzDF12z70d6tXr057e3vVY+wT6xv2rIT13edx8mK1Wi1f+cpXcuedd+aGG27o0X3HjRvn1Q9UZMyYMVWPANRJvdZ3V1fXXu9YqCxO2tra8g//8A958MEHc8MNN/T4l9HU1CROoCLWHrx6lbC+K/m0ztq1azN9+vS0tbXllltu8SoMANilz+Nk+/bt+chHPpLx48fn2muvzfDhw/t6BACgYH3+ts6SJUuyfv36LF26NLfffvtu161cubKvxwEACtPncTJz5szMnDmzrx8WAOgnfH09AFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUJTK42TLli2ZOnVqVqxYUfUoAEABKo2TX/ziFzn33HOzdu3aKscAAApSWZz84Ac/yJw5czJ79uyqRgAACtRc1QOffPLJee9735vm5uZ9CpSurq46TPX/mpqa6rp96M/qvf7qzfqGl1ev9d2T7VYWJyNGjHhF91+1alUvTfLHhgwZkmOOOaZu24f+bvXq1Wlvb696jH1ifcOelbC+K4uTV2rcuHFe/UBFxowZU/UIQJ3Ua313dXXt9Y6FfhsnTU1N4gQqYu3Bq1cJ67vyjxIDALyYOAEAilLE2zqrV6+uegQAoBD2nAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnAAARREnAEBRxAkAUBRxAgAURZwAAEURJwBAUcQJAFAUcQIAFEWcAABFEScAQFEqi5PNmzfn4osvzsSJE3PiiSfm85//fDo7O6saBwAoRGVx8ulPfzr7779/7r777txyyy1Zvnx5rr/++qrGAQAKUUmcPPbYY7n//vtzySWXZMiQIRk9enQuvvji3HjjjVWMAwAUpLmKB33kkUfy2te+NiNHjtx12VFHHZX169fn6aefzrBhw172vrVaLUnS0dGRpqamus3Y1NSUow8+MC1NDXV7DOhvDh8xLF1dXenq6qp6lFfE+oY/Vu/1/cJ2X/h/fE8qiZNnnnkmQ4YM2e2yF35+9tln9xgn3d3dSZKHHnqofgP+n/cevX9y9P51fxzoT371q19VPUKvsL7hj/XF+n7h//E9qSRO9t9//7S3t+922Qs/H3DAAXu8b3Nzc8aNG5fGxsY0NHjVAwD9Qa1WS3d3d5qb/3R6VBInRx99dLZt25ZNmzbloIMOSpKsWbMmBx98cF7zmtfs8b6NjY1paWnpizEBgApUckDsEUcckQkTJuSKK65IW1tbfv/732fhwoU5++yzqxgHAChIQ21vjkypg02bNmXBggVZsWJFGhsbc+aZZ2bOnDl1PcgVAChfZXECAPBSfH09AFAUcQIAFEWcAABFEScAQFHECQBQFHECABRFnFCMxx9/PGPGjMnNN9+cKVOmZMKECZk5c2Y2bNiQJLnjjjsybdq0jB8/Pu9617ty/fXX79U5GoC+N3/+/Jx//vm7XbZgwYJceumlWbt2bT72sY/lxBNPzOTJk/PlL385HR0dSZK2trbMnj07J554Yk466aR89KMfzZo1a6p4ClRInFCcu+66K62trVm2bFk2bdqUhQsX5r777sunP/3pXHDBBbn//vvzpS99Kdddd12+853vVD0u8BLOPvvsLF++PBs3bkzy/Jnkf/jDH+b000/Peeedl6OPPjo///nPc9NNN+Xee+/NVVddlST51re+lba2tvzsZz/LnXfemREjRuQLX/hClU+FCogTinPhhRdm2LBhOeiggzJlypT87ne/y5IlS/KOd7wjp59+epqbm3Psscfm7/7u7/Ld73636nGBl/DmN785Rx11VG677bYkz7/oGDp0aJ599tl0dHTkM5/5TAYNGpRDDjkkn/rUp3LjjTcmSQYPHpyHH344ra2t2bhxY6644opcc801VT4VKlDJif9gT144GWTy/Fmoa7VaNm/enL/4i7/Y7XZvfOMbs27dur4eD9hL06ZNS2traz760Y9myZIlOeuss7Ju3bps2bIlJ5xwwq7b1Wq17Ny5M5s3b86FF16YlpaW3HLLLVmwYEFGjx6dz372sznttNMqfCb0NXFCv3DooYdm7dq1u132+9//PiNGjKhoIuBPOeOMM/KlL30pK1euzH/9139l/vz5+cUvfpHDDjsst99++67btbW1ZfPmzRk+fHhWr16dKVOm5Lzzzssf/vCH3HTTTZk9e3buu+++P3nWel49vK1DvzB9+vT89Kc/zdKlS9PV1ZWHHnoo3/zmNzN9+vSqRwNexutf//qccsopWbBgQSZOnJhRo0Zl8uTJeeaZZ7J48eJ0dHTk6aefzt///d9n9uzZaWhoyM0335xLL700mzdvztChQzN06NDsv//+aWlpqfrp0IfECf3CW97ylnz1q1/NN7/5zUycODGzZs3KBz/4wXzsYx+rejRgD6ZNm5aHHnpo1wuJoUOH5vrrr8+KFSvy13/913nnO9+ZxsbGXceVfOYzn8nhhx+ed7/73Rk/fnyWLFmShQsXZtCgQVU+DfqYsxIDUDcPP/xwZsyYkXvuuUdgsNcccwJAr2tra8v69evzla98JdOmTRMm9Ii3dQDodRs2bMi5556b7du35+KLL656HPoZb+sAAEWx5wQAKIo4AQCKIk4AgKKIEwCgKOIEACiKOAF6zYoVKzJmzJiXvX7RokW54IILkiRLlizJlClTXva2c+fOzdy5c3t9RqB8voQN6DNONwDsDXtOgH3y4IMPZsaMGTn++ONz8skn56tf/Wpe+Nqka6+9NlOnTs1xxx2XT37yk2lra0uSXHXVVZkxY8ZLbu8nP/lJ3v3ud+e4447LRRddlK1bt+667qqrrsr555+f6dOnZ9KkSfnv//7vtLW1ZcGCBTnllFPytre9LbNnz86mTZuSJI8//njGjBmTm2++OVOmTMmECRMyc+bMbNiwoc6/FaA3iBOgx7Zt25bzzz8/J554YlasWJGbbropS5Ysye9+97skybp163Lbbbdl2bJl+dWvfpUbb7xxj9v7zW9+k0996lO56KKL8sADD+Scc87J3Xffvdttli9fnjlz5uTOO+/M8ccfn3nz5uWxxx7LkiVLcscdd2To0KGZNWtWXvy9knfddVdaW1uzbNmybNq0KQsXLuz13wXQ+7ytA/TYnXfemUGDBuXjH/94Ghoacthhh+W6667LqlWrkiSf+MQnMmjQoIwcOTInnHBC1q5du8ft/ehHP8pf/uVf5n3ve1+S5J3vfGcmT568221Gjx6dt73tbUmSzZs3Z9myZVm6dGle//rXJ0nmzZuXiRMn5sEHH8xrX/vaJMmFF16YYcOGJUmmTJmSlStX9trvAKgfcQL02FNPPZVDDjkkDQ0Nuy478sgj89RTTyVJXve61+26fL/99ktXV9cet7dx48aMGjVqt8sOO+yw3d7aecMb3rDrz+vWrUuSvP/979/tPk1NTXn88cd3xclBBx2067rm5uY4Wwf0D+IE6LGDDz44TzzxRGq12q5AueOOO3YdW7Iv27vrrrt2u2zDhg27ncn2xSE0cuTIJMnSpUszYsSIXZc/+uijGT169K5IAvonx5wAPXbqqaems7MzixYtSkdHR9auXZsrrrgizz333D5t733ve1/+53/+J9///vfT2dmZe+65J//5n//5srcfOXJkTj311Hz+85/P1q1bs3PnzlxzzTU5++yz8/TTT+/r0wIKIU6AHhs2bFiuvfbaLF++PCeffHJmzJiRD3zgAzniiCP2aXujR4/OokWLcuONN2bChAlZuHBhpk6dusf7/Ou//muGDRuWM888M29961vzs5/9LIsXL95tTwrQPzXUvAkLABTEnhMAoCjiBAAoijgBAIoiTgCAoogTAKAo4gQAKIo4AQCKIk4AgKKIEwCgKOIEACiKOAEAivK/KtED3jbT5gkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# T-test\n", "display(pg.ttest(affairs.query('children == \"yes\"')['rating'], \n", " affairs.query('children == \"no\"')['rating']))\n", "\n", "# Means\n", "means = affairs.groupby(by=['children']).agg({'rating': 'mean'})\n", "display(means)\n", "\n", "# Plot with a barchart but other options might work\n", "sns.barplot(data=affairs, x='children', y='rating')" ] }, { "cell_type": "markdown", "id": "a3443c97-1941-46cf-b62e-3086ae400b75", "metadata": {}, "source": [ "### e. Using ANOVA to test slightly more complicated relationships\n", "Does having children affect marital satisfaction differently for males and females?\n", "\n", "To answer this, you need an 'two-way' ANOVA (eg - its a linear model with TWO predictors, each being categorical). Use ANOVA to test these differences with `pingouin`, and if you observe a difference, work out the means with `pandas` and again make a plot with `seaborn`." ] }, { "cell_type": "code", "execution_count": 5, "id": "b5e00597-103a-43af-b9eb-366b5474913b", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SourceSSDFMSFp-uncnp2
0children28.1160621.028.11606224.1129080.0000010.038822
1gender0.0269711.00.0269710.0231310.8791690.000039
2children * gender5.9334171.05.9334175.0886200.0244440.008452
3Residual696.112181597.01.166017NaNNaNNaN
\n", "
" ], "text/plain": [ " Source SS DF MS F p-unc \\\n", "0 children 28.116062 1.0 28.116062 24.112908 0.000001 \n", "1 gender 0.026971 1.0 0.026971 0.023131 0.879169 \n", "2 children * gender 5.933417 1.0 5.933417 5.088620 0.024444 \n", "3 Residual 696.112181 597.0 1.166017 NaN NaN \n", "\n", " np2 \n", "0 0.038822 \n", "1 0.000039 \n", "2 0.008452 \n", "3 NaN " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rating
childrengender
nofemale4.404040
male4.097222
yesfemale3.726852
male3.864486
\n", "
" ], "text/plain": [ " rating\n", "children gender \n", "no female 4.404040\n", " male 4.097222\n", "yes female 3.726852\n", " male 3.864486" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# Carry out anova\n", "aov = pg.anova(data=affairs, dv='rating', between=['children', 'gender'])\n", "display(aov)\n", "\n", "# Compute means, the interaction is significant\n", "means = affairs.groupby(by=['children', 'gender']).agg({'rating': 'mean'})\n", "display(means)\n", "\n", "# Plot\n", "sns.barplot(data=affairs, x='gender', y='rating', hue='children');" ] }, { "cell_type": "markdown", "id": "b02bab8f-69de-44c5-b7e2-446a7c94c45f", "metadata": {}, "source": [ "### e. Carrying out an analysis of covariance (ANCOVA).\n", "A bit of a challenge. A popular statistical approach is the ANCOVA, which carries out an ANOVA while 'controlling' for another continuous variable, or a 'covariate'. This is simply confusing language for a general linear model with categorical predictors and a continuous predictor, which we will examine in more detail soon. \n", "\n", "Here, can you carry out an `ancova` with `pingouin`, assessing whether males and differ in the number of affairs they have, controlling for the years they have been married? Check the `pingouin` website [here](https://pingouin-stats.org/build/html/api.html) for help - reading documentation is a key skill in statistics and programming! Set the `effsize` (effect size) to 'n2', or standard $R^2$.\n", "\n", "\n", "As an additional challenge, if there are any significant results, can you plot the relationship between years married and affairs, and colour the points by male vs female respondents?" ] }, { "cell_type": "code", "execution_count": 6, "id": "9bdf87d2-3b38-442c-a009-5d2c51e895d3", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SourceSSDFFp-uncn2
0gender0.24143610.0229140.8797320.000037
1yearsmarried227.271157121.5696030.0000040.034813
2Residual6300.911061598NaNNaNNaN
\n", "
" ], "text/plain": [ " Source SS DF F p-unc n2\n", "0 gender 0.241436 1 0.022914 0.879732 0.000037\n", "1 yearsmarried 227.271157 1 21.569603 0.000004 0.034813\n", "2 Residual 6300.911061 598 NaN NaN NaN" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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D2f58uX1y3788Ud+97vf0bNnT4YOHcrbb78dwApFRESkNQlYcFm1ahWXXnop2dnZ9cuKi4u54YYbGDVqFCtXrmTmzJnMmjWLNWvWBKpMERERaUUCElzeeecdbr/9dm677bYGyz/66CPi4uK4/PLLsdvtDBgwgJEjR/L6668HokwRERFpZeyBuNFBgwYxcuRI7HZ7g/Dy888/07Vr1wbrdu7cmXnz5jX7Njwez3HXWTeHL+Yyg1DrF0Kv51DrF9RzKAi1fiE4e25qLwEJLsnJyYddXl5ejsvlarAsPDycioqKZt9GVlbWMdXW0nOZQaj1C6HXc6j1C+o5FIRavxCaPQckuDTG5XJRWlraYFlVVRWRkZHNnqtbt27YbLbjqsfj8ZCVleWTucwg1PqF0Os51PoF9RwKPYdavxCcPdf1dDStKrh07dqVr7/+usGyzZs306VLl2bPZbPZfLYxfTmXGYRavxB6PYdav6CeQ0Go9Quh2XOruo7L8OHDyc/PZ+7cudTU1LBs2TIWLFjAmDFjAl2aiIiItAKtKrjEx8fz8ssvs2jRIvr168e9997LvffeS//+/QNdmoiIiLQCAf+oaOPGjQ1+7tatG2+++WaAqhEREZHWrFXtcRERERE5EgUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExjVYZXNatW8fll19Onz59GDRoEH/5y19wu92BLktEREQCrNUFF6/Xy4033siIESNYsWIF8+bN46uvvuLFF18MdGkiIiISYK0uuBQXF7Nv3z68Xi+GYQBgtVpxuVwBrkxEREQCzR7oAn4tPj6e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fQ+Qw+EImeDiy37j4uLq728RERFfCLngYrFYSE9PJyUlhZqamiOu6/F42LBhA507dw6JvQa+7NfhcITEfSYiIv4VcsGljs1mO+oLa9338ISHh4fEi3Co9SsiIuYTUgfnioiIiLkpuIiIiIhpKLiIiIiIaSi4iIiIiGkouIiIiIhpKLiIiIiIaSi4iIiIiGkouIiIiIhpKLiIiIiIaSi4iIiIiGkouIiIiIhpKLiIiIiIaSi4iIiIiGkouIiIiIhpKLiIiIiIaSi4iIiIiGkouIiIiIhpKLiIiIiIabTa4OLxeBg/fjzTp08PdCkiIiLSSrTa4PL000/z3XffBboMERERaUVaZXD59ttv+eijjzjvvPMCXYqIiIi0IvZAF/BrBQUF3HPPPTz77LPMnTv3mOfxeDzHXUvdHL6YywxCrV8IvZ5DrV9Qz6Eg1PqF4Oy5qb1YDMMwWriWJvN6vVx33XUMGTKkwfEts2fPbvIcHo+H1atXt1CFIiIi0pJ69OiBzWZrdLxV7XF54YUXcDqdjB8//rjn6tat2xEbbwqPx0NWVpZP5jKDUOsXQq/nUOsX1HMo9Bxq/UJw9lzX09G0quDy3//+l71799KnTx8AqqqqAPjkk0+afaCuzWbz2cb05VxmEGr9Quj1HGr9gnoOBaHWL4Rmz60quCxatKjBz8fyUZGIiIgEr1Z5VpGIiIjI4bSqPS6/pj0tIiIicjDtcRERERHTUHARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTUHARERER07AHugDxnSp3LbtLqgFIiwkj3KnNeyT7yyspqqglKbNLoEsJetWVZRiVxWBzEB6bEuhyglpRWSUllTWktOsY6FIkCHnyt2LBi9cVhz0yKSA16JUtSGzPL+ftVTks+HEXABedns643u3okBQZ4Mpan2p3LTuKKvn70i18vaWAmHAH4wdkcnbXZDITdH/5Uq27GqNwK9av5uDI/hIikqjqNxnLCWcTFpcW6PKCSll5FduLqnj6s82szikmJSaM6wedQO/MWDISogJdnpict3A7lq2fY1v5IlQWYelwFsaZt+CJbY893L+PLwWXILA9v5wrX15BdmFF/bJnP9vCgh/zePWafgovv7Ilv5yxz39LhdsDwK7iKu59dx2Duybx4CWnkpmoJ3lfMfauxzF3BNQe2BNISR7h/70e96njqDrvIcJjkwNbYBBZs6uMK19eQa3XAGB3SRWT31zN5f0yuXXICaTE6XEtx8ZTsB3r4mlYNi2qX2ZZ8yb89B62qz+EjB5+rUfHuJicx+Nh0brdDUJLnZzCSj5cuwuPxxOAylqnPcXlPLxoY31oOdjSTfnsKq4OQFXBqapkH7ZFd/4SWg7iXPcW1rLdAagqOOUWlHHfe+vqQ8vBXl+eTVGlNwBVSbCwlu1qEFrq1VTAJ/dTuz/Xv/X49dbE53aVVPNB1q5Gx9/P2kWeXozrlbsNvvh5X6Pji9bqxdRXLNUlWHeuaHTcu/lTP1YT3Eqqa9m8t6zR8ZXbC/1YjQSdjR80OmTZthRbTbkfi1FwMT2bxYLD1vhmdNps2K0WP1bUulks4LA2fn+FOfRfwlcsWMFyhPvT4fJfMUHOdoTHNEC4HtdyPOxhjY9ZbAeeWP1Ij2aTS49zcWnfdo2OX9q3LelxeoGoExdu44JujR8UekG3dD9WE9wMVzyezuc1Om7rdI7/iglyMWFWemXGH3bMZrXQs5ExkSY5aWSjQ8bJF1MbFuvHYhRcgkL/jgn0bX/oE1Of9vEM6JgYgIpar/goF7cM60JaTPghYxMGdiAx0hGAqoJTWFQc3uF/gcOcMlk9+M94InVatK+kxUfx4KhTiQk/9HyLey88icQIPdXLsfO4EjAGTD50IDoNhtyFI9q//5d1VlEQyEyI5NFxp7M2t5j/fJ+LYcCY3m3o1iaWzESdUfRrHZOj+PcN/fhs4z6W/LSXuAgHf+iXSWZ8OG3idX/5kiOlC+5rPsX70/uEb/2Y2sgUvH1uwEg4gfAo7QXwpZNTo3h30kAWrtnFim1FpMWEcUX/9rSNdRIXpce1HDt7fDtq+16PretvYNU/sFQUYXQeDif+BktiJ//X4/dblBbRPjGS9omRDOp84N1tbIQzwBW1bickRXFCUhSjuqeBt5bYqAhsNlugywpKzsQOGAP/iLv3VVjtTpwOPTZbgtVmo2NyNDefE0FJv2pqqipJiI/R41p8wp7QHhLa40nrjuGpxh4VuEsZaP9hkImNcCq0NENshJNtmzcFuoygZ7FacbqisCu0tDirzUa0K4zsHdsDXYoEIZsrJqChBRRcRERExEQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ0FFxERETENBRcRERExDQUXERERMQ07IEuQCRQqirKKK6oom27doEuJehVlJdSWunGYbOQEJ8Q6HKCWnlFBaWV1aRltAl0KRKEtueX4TUgNtxGYrQrIDW0yuCyYcMGHn74YdatW4fD4eDMM89k+vTpJCToCU+On6emhuzCMv6+dCufb9lPTLiD6wakM7hrMikJcYEuL6jUVFWyo6iSZz/fwjfbSkiMcnLjwAwGdkwkSfe1T1VXVbGtoJynlmxhVU4pKTFhTDqrmj7t40mMiwl0eWJy2QXlfLU5n1eX7WB/RQ0DOiZy4+COZMTaiXZF+LWWVvdRUVVVFddddx09e/bkq6++YuHChezfv5+777470KVJkNiaX8qFzyzn39/vZldxFRv3lHLHu5u469315BcWBrq8oLJxbxkXPrOc+T/uZXdJFevySrhl3gYeWrSJoiLd176Ulbufi55Zzvvr9rG7pIo1O4u58d9reeazLRSXlga6PDGx7IIy/t+C9dz9zlp+2lXKruIq5v+Qy6hnvmFHYY3f62l1wSUvL4+TTjqJSZMm4XQ6iY+P59JLL2XlypWBLk2CQGnJfmYt2kiF23PI2KebisjZ7w5AVcGpaH8R9y3cSHWt95Cx+Wv2sbv80OVybPKLipn+343Ueo1Dxl5enkd+eW0AqpJgsafUzacb9h6yvLLGw6wPf2LX/gq/1tPqPirq2LEjL730UoNlixcv5tRTT23WPB7PoS9MzVU3hy/mMoNQ6Lek2uCzTY2/0/9w7R66t0/2Y0X+5c9tXFJt8H12caPjX27cQ9f0+BavIxQe18VVtWzeW9bo+A/b8+mQHLwfF4XCNv41f/b88fo9jY59s6WACrfXp6+5R9PqgsvBDMPg8ccf57PPPuO1115r1u9mZWX5rA5fzmUGwdxvWvuOOKxW3J7Dv9sPd1jIz89n586dfq7Mv/yxjZPbnYDVAofZCQBAuMNKXl4ee/ce+k6uJQTz4zo+o8MRx512Kz///DPl5eX+KShAgnkbN6alez7ttNMIszf+4YzNYsFigdWr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iY5PPfoE0mRdkyN4d9JAFq7ZxYptRaTFhHFF//ZkRFtJitMZRXLsUhPiuLq/hWEnp/Dqsmz2V9Qw5MRkhp2cQock/x871eqCC8CTTz7JjBkzGDZsGFarlVGjRjFx4sSA1LJ720Z69OjBiRefQqW7lrgI5yHXk7EldICEDngyeoHHjS0q+bBz2eIzIT4TT+pp4K7EiEjw2bVpLAkdIaEj3g5nAWCNPL7rwgQ7S2InSPwjNaeMxeIIw+KMxB5i79T8xZnUgdoBN1Fx+uXYnWGEhUdwhCO+5Bg5HA46JjuYONjFFX2rCHc6CHPYQ24PhLSM9MRY0hOhe3oE1TUev+9lOVirDC5JSUk8+eSTgS6jgchwJ5HhziOuY3M17V2NLTwawltmoyuwNI81MoHVq1cH7Wf/rYXdbsceEx/oMkKC3W4nNtKlx7W0CJcrgl+dP+N3re46LiIiIiKNUXARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTUHARERER01BwEREREdNQcBERERHTaJWX/D8ehmEAB74e+3jVzeGLucwg1PqF0Os51PoF9RwKQq1fCM6e63qpex1vjMU42hom43a7ycrKCnQZIiIicgy6deuG09n4dwMGXXDxer3U1tZitVqxWCyBLkdERESawDAMvF4vdrsdq7XxI1mCLriIiIhI8NLBuSIiImIaCi4iIiJiGgouIiIiYhoKLiIiImIaCi4iIiJiGgouIiIiYhoKLiIiImIaCi6HUVBQwMSJE+nTpw/9+vVj5syZ1NbWBrqsFrVhwwauvvpqzjjjDM4880zuvPNOCgsLA11Wi/N4PIwfP57p06cHupQWt3//fu6880769etH3759mThxInv37g10WS1q3bp1XH755fTp04dBgwbxl7/8BbfbHeiyfK6wsJDhw4ezfPny+mU//vgjv/vd7+jZsydDhw7l7bffDmCFvne4nhcvXswll1xCr169GDp0KE8//TRerzeAVfrW4Xqus3fvXgYOHMj8+fMDUJl/KbgcxpQpU4iIiODLL79k3rx5fPvtt8ydOzfQZbWYqqoqrrvuOnr27MlXX33FwoUL2b9/P3fffXegS2txTz/9NN99912gy/CLyZMnU1FRwccff8xnn32GzWbjz3/+c6DLajFer5cbb7yRESNGsGLFCubNm8dXX33Fiy++GOjSfGrVqlVceumlZGdn1y8rLi7mhhtuYNSoUaxcuZKZM2cya9Ys1qxZE8BKfedwPa9du5Y777yTKVOm8N133/Hiiy8yf/78oHnuPlzPdbxeL7fffjtFRUUBqMz/FFx+ZceOHaxYsYI77rgDl8tFu3btmDhxIq+//nqgS2sxeXl5nHTSSUyaNAmn00l8fDyXXnopK1euDHRpLerbb7/lo48+4rzzzgt0KS1u7dq1/Pjjj8yePZuYmBiioqJ48MEHuf322wNdWospLi5m3759eL3e+i9ts1qtuFyuAFfmO++88w633347t912W4PlH330EXFxcVx++eXY7XYGDBjAyJEjg+J5rLGec3NzueyyyxgyZAhWq5VOnToxfPjwoHgea6znOs888wxpaWmkp6f7ubLAUHD5lZ9//pm4uDhSU1Prl3Xq1Im8vDxKSkoCWFnL6dixIy+99BI2m61+2eLFizn11FMDWFXLKigo4J577uFvf/tbUL2QNWbNmjV07tyZt956i+HDhzNo0CAefvhhkpOTA11ai4mPj2fChAk8/PDDdOvWjcGDB9OhQwcmTJgQ6NJ8ZtCgQXz88cdccMEFDZb//PPPdO3atcGyzp07s2HDBn+W1yIa63nEiBHcdddd9T9XVVXx+eefB8XzWGM9Ayxbtoz333+f+++/PwCVBYaCy6+Ul5cf8kJW93NFRUUgSvIrwzCYM2cOn332Gffcc0+gy2kRXq+XO+64g6uvvpqTTjop0OX4RXFxMRs3bmT79u288847vPvuu+zZs4dp06YFurQW4/V6CQ8P589//jOrV69m4cKFbNmyhSeffDLQpflMcnIydrv9kOWHex4LDw8Piuewxno+WFlZGZMmTSI8PDwogmpjPRcUFHD33Xfz6KOPEhkZGYDKAkPB5VciIiKorKxssKzu52B/YJSVlXHLLbewYMECXnvtNU488cRAl9QiXnjhBZxOJ+PHjw90KX5T9xXx99xzD1FRUSQlJTFlyhSWLl1KeXl5gKtrGR9//DGLFy/mD3/4A06nky5dujBp0iT+/e9/B7q0FudyuaiqqmqwrKqqKuifwwC2bt3KZZddRm1tLa+88gpRUVGBLqlFGIbBnXfeyfjx4znttNMCXY5fHTm2hqAuXbqwf/9+8vPzSUpKAmDLli2kpaURHR0d4OpaTnZ2Ntdffz0ZGRnMmzePhISEQJfUYv773/+yd+9e+vTpA1D/BP/JJ58E7YG6nTt3xuv1UlNTQ1hYGED92RbB+gXxu3btOuQMIrvdjsPhCFBF/tO1a1e+/vrrBss2b95Mly5dAlSRfyxdupSpU6cybtw4/vSnPx11z4yZ7dq1ixUrVvDjjz/yzDPPAAfefP6///f/WLx4MS+88EKAK2w52uPyKx06dKB379489NBDlJWVkZOTw7PPPsvYsWMDXVqLKS4u5qqrrqJXr1784x//COrQArBo0SK+//57vvvuO7777jsuuugiLrrooqANLQADBw6kXbt23H333ZSXl1NYWMicOXM499xzg/Yd6aBBg9i3bx/PP/88Ho+HnJwcnnvuOUaOHBno0lrc8OHDyc/PZ+7cudTU1LBs2TIWLFjAmDFjAl1ai1m9ejWTJk3irrvuYtq0aUEdWgAyMjLIysqqfx777rvvyMjI4P777w/q0AIKLof15JNPUltby7Bhwxg3bhxnnXUWEydODHRZLWb+/Pnk5eXx4Ycf0rt3b3r27Fn/R4KDw+Hg1VdfxWazMWLECEaMGEFaWhoPPfRQoEtrMZ07d+aFF15gyZIl9OvXjyuvvJKhQ4c2emZGMImPj+fll19m0aJF9OvXj3vvvZd7772X/v37B7q0FvP8889TW1vLzJkzGzyHXXfddYEuTXzMYgTrfmIREREJOtrjIiIiIqah4CIiIiKmoeAiIiIipqHgIiIiIqah4CIiIiKmoeAiIiIipqHgIiIiIqah4CIiIiKmoeAiIiHvvvvu47777jum3925cycnnngiO3fu9HFVInI4wf1lDiIiTTBjxoxAlyAiTaTgIiL17rvvPnbu3MnLL79cv2zGjBmUlZVx880389BDD/HDDz8QERHBxRdfzKRJk3A6nRiGwYsvvsiCBQvYtWsXFouFs88+m5kzZxIeHs706dOpqKjg559/pqioiLfeeouvvvqKl19+mf3795Oens6VV17J7373O3bu3MmwYcN4+OGHeeKJJygqKuL8889nzJgxzJgxg5ycHLp3786cOXNISEigrKyM2bNns2LFCvbu3Ut0dDSXX345N910EwBDhw5l0KBBfPrppyQnJzNt2jSmT59Onz59WLp0KTfccANbt24FYPbs2QC8//77PP/88+Tl5dG+fXumTp3KoEGDgAPfwPvggw/yySefEBERwWWXXebnrSQS4gwRkf/58ccfjZNOOsnYvXu3YRiGUV1dbZxxxhnGZ599ZgwZMsR49NFHjaqqKiMvL88YO3as8eijjxqGYRjvv/++ceaZZxrbtm0zDMMwNm/ebJxxxhnGW2+9ZRiGYUybNs3o0aOHsXHjRqO4uNjIzs42TjvtNGPLli2GYRjGF198YXTr1s3Ys2ePkZOTY3Tt2tWYMmWKUVFRYWzcuNE4+eSTjYsvvtjYvXu3UVBQYAwfPtx46qmnDMMwjPvvv9+46qqrjOLiYsPr9RqLFi0yunbtamzfvt0wDMMYMmSIcckllxjFxcVGcXGxsWzZMqNr167G008/bbjdbqO0tNSYNm2aMW3aNMMwDOPzzz83evfubaxYscKora01lixZYvTo0cPYtGmTYRiGcccddxiXXnqpkZ+fbxQWFhpXX3210bVrVyMnJ8c/G0kkxOkYFxGp1717dzp16sTChQsB+Pzzz4mKiqKiogK3283UqVMJCwsjPT2dW2+9lddffx2As88+m3nz5tGhQwcKCwspKioiLi6OPXv21M/do0cPunbtSkxMDDabDcMwePPNN1m1ahUDBgxg9erVpKSk1K9/zTXX4HK56Nq1K8nJyfz2t78lNTWVhIQEevToQW5uLgCTJ0/m8ccfJyoqit27dxMWFgbA3r176+caMWIEMTExxMTE1C8bO3YsDoeDqKioBvfBa6+9xu9//3v69u2LzWZjyJAhDB06lDfffBO3282HH37I5MmTSUxMJD4+njvvvNPHW0FEjkQfFYlIA6NHj+bdd9/l2muvZf78+fz2t78lNzeXwsJC+vbtW7+eYRjU1NRQUFCA0+lkzpw5fPbZZyQkJHDyySdTU1ODcdCXzx8cSjIyMnj11Vd56aWXuOmmm/B4PIwePZo77rijfp24uLj6f9tstgahw2q11s9dUFDAzJkzWb9+PW3btuW0004DwOv1Hva2j7QMIDc3lxUrVvDvf/+7fpnH46F///4UFRXhdrtJT0+vH2vXrl3jd6aI+JyCi4g0cMkll/DYY4/xww8/8PXXX3PfffexatUqMjMzWbRoUf16ZWVlFBQUkJCQwAMPPEBeXh5Lliyp34MxcuTIBvNaLJb6fxcUFODxeHjmmWfwer18//333HLLLZxwwgkMHjz4kPWP5NZbb2Xo0KH84x//wG631x9D09htH2kZQFpaGqNGjeKGG26oX5aXl0d4eDhRUVGEhYWRk5NDx44dAdi9e3eT6hQR39BHRSLSQGJiIoMHD2bGjBn06dOHjIwMhgwZQnl5OS+99BJut5uSkhKmTZvGbbfdhsVioaysjLCwMGw2G9XV1bz88sts2rSJmpqaw95GXl4e11xzDd9++y1Wq5XU1FQA4uPjm11vaWkp4eHh2Gw2CgsL+ctf/gLQ6G0fzbhx43jllVdYs2YNAFlZWYwePZqFCxfidDoZNWoUTzzxBLt376a0tJRHHnnkmG5HRI6NgouIHGL06NGsX7+eMWPGABAVFcXcuXNZvnw5Z599Nueeey5Wq5XnnnsOgClTplBVVcXAgQMZOnQoq1ev5pJLLmHTpk2Hnb9bt27cd999PPDAA/Ts2ZPLL7+cP/zhD5x//vnNrnXWrFl88MEH9OrVi9GjR5Oamsopp5zS6G0fzW9+8xumTp3K3XffTa9evbj11luZMGEC48ePB+Cee+6he/fujBw5kvPOO4/TTz/9mG5HRI6NxTj4Q2gREWDDhg2MHz+er776qv5gVxGR1kDHuIhIvbKyMvLy8nj88ccZPXq0QouItDr6qEhE6u3evZtLL72U4uJiJk6cGOhyREQOoY+KRERExDS0x0VERERMQ8FFRERETEPBRURERExDwUVERERMQ8FFRERETEPBRURERExDwUVERERMQ8FFRERETOP/A7N9JMeTrgS7AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# ANCOVA like this\n", "aocv = pg.ancova(data=affairs, dv='affairs', between='gender', covar=['yearsmarried'], effsize='n2')\n", "display(aocv)\n", "\n", "# Plot like this\n", "sns.scatterplot(data=affairs, x='yearsmarried', y='affairs', hue='gender');" ] }, { "cell_type": "markdown", "id": "d0ff650d-9866-49d7-98a2-06b5064b1309", "metadata": {}, "source": [ "## 2. The general linear model with `statsmodels`\n", "Now we will get used to applying the general linear model to fit more complex analyses, repeat some old ones, and get to grips with the attributes of the model and how we can manipulate it." ] }, { "cell_type": "markdown", "id": "8a679880-ceed-430a-b926-2ea8fef3291e", "metadata": {}, "source": [ "### a. Fitting an actual linear model\n", "We will start by using `statsmodels` to conduct a regression.\n", "\n", "Suppose we have a theory that marital satisfaction is determined by the contribution of several predictors, that each influence how satisfied someone is in their marriage. Using the GLM, we will aim to predict marital satisfaction from the respondents gender, whether they have children (both categorical variables!), degree of religiosity, and the number of years they have been married. Notice we are already including a mix of variables - there is no restriction on variable types.\n", "\n", "Fit this model below, and have Python show the summary." ] }, { "cell_type": "code", "execution_count": 7, "id": "c0ed547f-56af-451f-a668-3695fa9ae961", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: rating R-squared: 0.070
Model: OLS Adj. R-squared: 0.064
No. Observations: 601 F-statistic: 11.27
Covariance Type: nonrobust Prob (F-statistic): 8.07e-09
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 4.1801 0.141 29.650 0.000 3.903 4.457
gender[T.male] 0.0093 0.087 0.106 0.916 -0.162 0.181
children[T.yes] -0.2094 0.118 -1.775 0.076 -0.441 0.022
religiousness 0.0771 0.038 2.017 0.044 0.002 0.152
yearsmarried -0.0420 0.010 -4.329 0.000 -0.061 -0.023


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & rating & \\textbf{ R-squared: } & 0.070 \\\\\n", "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.064 \\\\\n", "\\textbf{No. Observations:} & 601 & \\textbf{ F-statistic: } & 11.27 \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ Prob (F-statistic):} & 8.07e-09 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & 4.1801 & 0.141 & 29.650 & 0.000 & 3.903 & 4.457 \\\\\n", "\\textbf{gender[T.male]} & 0.0093 & 0.087 & 0.106 & 0.916 & -0.162 & 0.181 \\\\\n", "\\textbf{children[T.yes]} & -0.2094 & 0.118 & -1.775 & 0.076 & -0.441 & 0.022 \\\\\n", "\\textbf{religiousness} & 0.0771 & 0.038 & 2.017 & 0.044 & 0.002 & 0.152 \\\\\n", "\\textbf{yearsmarried} & -0.0420 & 0.010 & -4.329 & 0.000 & -0.061 & -0.023 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{OLS Regression Results}\n", "\\end{center}\n", "\n", "Notes: \\newline\n", " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: rating R-squared: 0.070\n", "Model: OLS Adj. R-squared: 0.064\n", "No. Observations: 601 F-statistic: 11.27\n", "Covariance Type: nonrobust Prob (F-statistic): 8.07e-09\n", "===================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-----------------------------------------------------------------------------------\n", "Intercept 4.1801 0.141 29.650 0.000 3.903 4.457\n", "gender[T.male] 0.0093 0.087 0.106 0.916 -0.162 0.181\n", "children[T.yes] -0.2094 0.118 -1.775 0.076 -0.441 0.022\n", "religiousness 0.0771 0.038 2.017 0.044 0.002 0.152\n", "yearsmarried -0.0420 0.010 -4.329 0.000 -0.061 -0.023\n", "===================================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# Fit the model like so\n", "model = smf.ols('rating ~ gender + children + religiousness + yearsmarried', data=affairs).fit()\n", "display(model.summary(slim=True))" ] }, { "cell_type": "markdown", "id": "8f1f0cd7-758e-4d54-9796-9726b1bccd30", "metadata": {}, "source": [ "### b. Interpreting the coefficients\n", "Now for the tricky part. What does each coefficient mean?\n", "\n", "- What is the definition of the intercept?\n", "- What is the definition of the `gender[T.male]` coefficient?\n", "- What is the definition of the `children[T.yes]` coefficient?\n", "- What is the definition of the `religiousness` coefficient?\n", "- What is the definition of the `yearsmarried` coefficient?\n", "\n", "Do any of these make sense in their current definition?" ] }, { "cell_type": "code", "execution_count": 8, "id": "c9cb96cd-c2d5-4d6c-ba73-881ddefb25e5", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# Your answer here\n", "# Intercept - average satisfaction when all other predictors at zero - which means for females with no children!\n", "# Gender - change in for males compared to females, holding all constant\n", "# Children - change in satisfaction for someone with children compared to without, holding all constant\n", "# Religiousness - Increase in satisfaction for a 1 step up the scale on religiosity, holding all constant\n", "# Years Married - Increase in satisfaction with every additional unit of years married (one year)" ] }, { "cell_type": "markdown", "id": "a1894e92-5f90-418f-8735-380006b9e89f", "metadata": {}, "source": [ "### c. Altering the model for interpretability\n", "The previous model suggests some interesting relationships, but it is a little difficult to interpret it. For example, religiousness does not have a clear meaning (it ranges 1, 2, 3... etc), and years married has some slight difficulty in interpretation. It may be better to scale those two variables, so that the intercept makes sense. \n", "\n", "Use the formula syntax to scale the `religiousness` and `yearsmarried` predictors, and re-fit the model. Why would we not scale the `gender` and `children` predictors?" ] }, { "cell_type": "code", "execution_count": 9, "id": "861a6436-2558-423a-9a96-d9852c8a473f", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: rating R-squared: 0.070
Model: OLS Adj. R-squared: 0.064
No. Observations: 601 F-statistic: 11.27
Covariance Type: nonrobust Prob (F-statistic): 8.07e-09
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 4.0772 0.102 40.168 0.000 3.878 4.277
gender[T.male] 0.0093 0.087 0.106 0.916 -0.162 0.181
children[T.yes] -0.2094 0.118 -1.775 0.076 -0.441 0.022
scale(religiousness) 0.0900 0.045 2.017 0.044 0.002 0.178
scale(yearsmarried) -0.2336 0.054 -4.329 0.000 -0.340 -0.128


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & rating & \\textbf{ R-squared: } & 0.070 \\\\\n", "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.064 \\\\\n", "\\textbf{No. Observations:} & 601 & \\textbf{ F-statistic: } & 11.27 \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ Prob (F-statistic):} & 8.07e-09 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & 4.0772 & 0.102 & 40.168 & 0.000 & 3.878 & 4.277 \\\\\n", "\\textbf{gender[T.male]} & 0.0093 & 0.087 & 0.106 & 0.916 & -0.162 & 0.181 \\\\\n", "\\textbf{children[T.yes]} & -0.2094 & 0.118 & -1.775 & 0.076 & -0.441 & 0.022 \\\\\n", "\\textbf{scale(religiousness)} & 0.0900 & 0.045 & 2.017 & 0.044 & 0.002 & 0.178 \\\\\n", "\\textbf{scale(yearsmarried)} & -0.2336 & 0.054 & -4.329 & 0.000 & -0.340 & -0.128 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{OLS Regression Results}\n", "\\end{center}\n", "\n", "Notes: \\newline\n", " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: rating R-squared: 0.070\n", "Model: OLS Adj. R-squared: 0.064\n", "No. Observations: 601 F-statistic: 11.27\n", "Covariance Type: nonrobust Prob (F-statistic): 8.07e-09\n", "========================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "----------------------------------------------------------------------------------------\n", "Intercept 4.0772 0.102 40.168 0.000 3.878 4.277\n", "gender[T.male] 0.0093 0.087 0.106 0.916 -0.162 0.181\n", "children[T.yes] -0.2094 0.118 -1.775 0.076 -0.441 0.022\n", "scale(religiousness) 0.0900 0.045 2.017 0.044 0.002 0.178\n", "scale(yearsmarried) -0.2336 0.054 -4.329 0.000 -0.340 -0.128\n", "========================================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "# Scale like so\n", "model_two = smf.ols('rating ~ gender + children + scale(religiousness) + scale(yearsmarried)', data=affairs).fit()\n", "display(model_two.summary(slim=True))" ] }, { "cell_type": "markdown", "id": "04ec187b-f4da-48d8-abf6-9567f69951f6", "metadata": {}, "source": [ "Now what do the coefficients mean? How have they changed compared to the last one? " ] }, { "cell_type": "code", "execution_count": 10, "id": "17b74f16-48a1-40c9-8a14-4b3fc9e9b331", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# Your answer here\n", "# Intercept - average satisfaction when all other predictors at zero - which means for females with no children still\n", "# Gender - change in for males compared to females, holding all constant\n", "# Children - change in satisfaction for someone with children compared to without, holding all constant\n", "# Religiousness - Increase in satisfaction for a 1SD increase on religiosity, holding all constant\n", "# Years Married - Increase in satisfaction a 1SD increase in years married (one year)" ] }, { "cell_type": "markdown", "id": "fcf1ae39-ca34-4530-b7b9-902a9c3e94cc", "metadata": {}, "source": [ "### d. Evaluating the model\n", "The `.summary()` output suggests that while our model is statistically significant, it explains just 7% of the variance in satisfaction ratings. But we should not rely on this as a way to evaluate our model. Instead, we would like to know how *wrong our model is, on average*. And to know that, we have to compute the root-mean-squared-error, or RMSE.\n", "\n", "Check the notes for the import and code that will do this. Take your fitted models values, and use the correct function to calculate the RMSE. \n", "\n", "What is it? Is it any good? " ] }, { "cell_type": "code", "execution_count": 11, "id": "eacbfd95-5cb7-44ef-ae73-5277ac384455", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0628082871251807\n" ] } ], "source": [ "# Your answer here\n", "# Import rmse from statsmodels\n", "from statsmodels.tools.eval_measures import rmse\n", "\n", "# Call it\n", "accuracy = rmse(model_two.fittedvalues, affairs['rating'])\n", "print(accuracy)" ] }, { "cell_type": "markdown", "id": "34c3cb0d-1f9c-4c50-899f-774fbac4b74b", "metadata": {}, "source": [ "Note that 'any good' depends entirely on your use case, though lower is generally better. Here, we're wrong by about 1 rating scale point. That might be acceptable in some scenarios, but here it suggests that this is not particularly useful! We might consider more predictors, or more complex models, but we will get to that in time." ] }, { "cell_type": "markdown", "id": "e83a5eb5-c6e7-477c-9a70-bf793b387d35", "metadata": {}, "source": [ "## 3. Comparing and contrasting analyses through the GLM\n", "Finally, we will practice demonstrating comparisons between the analysis you performed earlier with `pingouin` and their GLM equivalents, just to drill home their similarities and to broaden your thinking about how models are used." ] }, { "cell_type": "markdown", "id": "59791754-afd7-49d0-8542-b318bf151bca", "metadata": {}, "source": [ "### a. Correlation\n", "Earlier, you showed that the number of affairs and marital satisfaction were negatively correlated. Reproduce that analysis with a GLM in `statsmodels` below." ] }, { "cell_type": "code", "execution_count": 12, "id": "4ae2cac9-40a5-4ea0-a397-a0ab4673fa4c", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: scale(affairs) R-squared: 0.078
Model: OLS Adj. R-squared: 0.077
No. Observations: 601 F-statistic: 50.76
Covariance Type: nonrobust Prob (F-statistic): 3.00e-12
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 1.615e-16 0.039 4.12e-15 1.000 -0.077 0.077
scale(rating) -0.2795 0.039 -7.125 0.000 -0.357 -0.202


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & scale(affairs) & \\textbf{ R-squared: } & 0.078 \\\\\n", "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.077 \\\\\n", "\\textbf{No. Observations:} & 601 & \\textbf{ F-statistic: } & 50.76 \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ Prob (F-statistic):} & 3.00e-12 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & 1.615e-16 & 0.039 & 4.12e-15 & 1.000 & -0.077 & 0.077 \\\\\n", "\\textbf{scale(rating)} & -0.2795 & 0.039 & -7.125 & 0.000 & -0.357 & -0.202 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{OLS Regression Results}\n", "\\end{center}\n", "\n", "Notes: \\newline\n", " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: scale(affairs) R-squared: 0.078\n", "Model: OLS Adj. R-squared: 0.077\n", "No. Observations: 601 F-statistic: 50.76\n", "Covariance Type: nonrobust Prob (F-statistic): 3.00e-12\n", "=================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "---------------------------------------------------------------------------------\n", "Intercept 1.615e-16 0.039 4.12e-15 1.000 -0.077 0.077\n", "scale(rating) -0.2795 0.039 -7.125 0.000 -0.357 -0.202\n", "=================================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Your answer here\n", "# It is the scaling that makes this analysis so\n", "smf.ols('scale(affairs) ~ scale(rating)', data=affairs).fit().summary(slim=True)" ] }, { "cell_type": "markdown", "id": "6e89d059-1ea9-4e3a-9233-21b149ce2e45", "metadata": {}, "source": [ "### b. T-test\n", "Can you reproduce the t-test as you did earlier, comparing satisfaction for those with and without children? Note - the t-value will not match exactly unless you turned off the 'correction' in the t-test. T-tests are for cowards. \n", "\n", "What do the coefficients mean here? Which category of the `children` variable became the intercept?" ] }, { "cell_type": "code", "execution_count": 13, "id": "158599b7-355e-424d-94bc-d9f0c072a640", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: rating R-squared: 0.039
Model: OLS Adj. R-squared: 0.037
No. Observations: 601 F-statistic: 24.00
Covariance Type: nonrobust Prob (F-statistic): 1.24e-06
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 4.2749 0.083 51.635 0.000 4.112 4.437
children[T.yes] -0.4795 0.098 -4.899 0.000 -0.672 -0.287


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & rating & \\textbf{ R-squared: } & 0.039 \\\\\n", "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.037 \\\\\n", "\\textbf{No. Observations:} & 601 & \\textbf{ F-statistic: } & 24.00 \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ Prob (F-statistic):} & 1.24e-06 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & 4.2749 & 0.083 & 51.635 & 0.000 & 4.112 & 4.437 \\\\\n", "\\textbf{children[T.yes]} & -0.4795 & 0.098 & -4.899 & 0.000 & -0.672 & -0.287 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{OLS Regression Results}\n", "\\end{center}\n", "\n", "Notes: \\newline\n", " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: rating R-squared: 0.039\n", "Model: OLS Adj. R-squared: 0.037\n", "No. Observations: 601 F-statistic: 24.00\n", "Covariance Type: nonrobust Prob (F-statistic): 1.24e-06\n", "===================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-----------------------------------------------------------------------------------\n", "Intercept 4.2749 0.083 51.635 0.000 4.112 4.437\n", "children[T.yes] -0.4795 0.098 -4.899 0.000 -0.672 -0.287\n", "===================================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Your answer here\n", "# t-test is easy\n", "smf.ols('rating ~ children', data=affairs).fit().summary(slim=True)" ] }, { "cell_type": "markdown", "id": "972ed37b-9280-4c83-93ed-bc8ea502dbcb", "metadata": {}, "source": [ "### c. ANCOVA\n", "We will return to the link between ANOVA and GLM's once we expand our modelling knowledge. But for now, we can demonstrate the equivalence between *ANCOVA* and a linear model. An ANCOVA is essentially a set of categorical predictors with several continuous predictors alongside. In the above challenge, you used an ANCOVA to address whether males and females differed in the number of affairs, while controlling for the length of their marriage. Can you reproduce that in a linear model form below, and can you draw comparisons to the ANCOVA output and the linear model version?" ] }, { "cell_type": "code", "execution_count": 14, "id": "9b472619-e57e-488c-9329-0e4cf2024b01", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SourceSSDFFp-uncn2
0gender0.24143610.0229140.8797320.000037
1yearsmarried227.271157121.5696030.0000040.034813
2Residual6300.911061598NaNNaNNaN
\n", "
" ], "text/plain": [ " Source SS DF F p-unc n2\n", "0 gender 0.241436 1 0.022914 0.879732 0.000037\n", "1 yearsmarried 227.271157 1 21.569603 0.000004 0.034813\n", "2 Residual 6300.911061 598 NaN NaN NaN" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: affairs R-squared: 0.035
Model: OLS Adj. R-squared: 0.032
No. Observations: 601 F-statistic: 10.83
Covariance Type: nonrobust Prob (F-statistic): 2.40e-05
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 0.5330 0.264 2.017 0.044 0.014 1.052
gender[T.male] 0.0402 0.265 0.151 0.880 -0.481 0.561
yearsmarried 0.1105 0.024 4.644 0.000 0.064 0.157


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/latex": [ "\\begin{center}\n", "\\begin{tabular}{lclc}\n", "\\toprule\n", "\\textbf{Dep. Variable:} & affairs & \\textbf{ R-squared: } & 0.035 \\\\\n", "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.032 \\\\\n", "\\textbf{No. Observations:} & 601 & \\textbf{ F-statistic: } & 10.83 \\\\\n", "\\textbf{Covariance Type:} & nonrobust & \\textbf{ Prob (F-statistic):} & 2.40e-05 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\\begin{tabular}{lcccccc}\n", " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", "\\midrule\n", "\\textbf{Intercept} & 0.5330 & 0.264 & 2.017 & 0.044 & 0.014 & 1.052 \\\\\n", "\\textbf{gender[T.male]} & 0.0402 & 0.265 & 0.151 & 0.880 & -0.481 & 0.561 \\\\\n", "\\textbf{yearsmarried} & 0.1105 & 0.024 & 4.644 & 0.000 & 0.064 & 0.157 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "%\\caption{OLS Regression Results}\n", "\\end{center}\n", "\n", "Notes: \\newline\n", " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: affairs R-squared: 0.035\n", "Model: OLS Adj. R-squared: 0.032\n", "No. Observations: 601 F-statistic: 10.83\n", "Covariance Type: nonrobust Prob (F-statistic): 2.40e-05\n", "==================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "----------------------------------------------------------------------------------\n", "Intercept 0.5330 0.264 2.017 0.044 0.014 1.052\n", "gender[T.male] 0.0402 0.265 0.151 0.880 -0.481 0.561\n", "yearsmarried 0.1105 0.024 4.644 0.000 0.064 0.157\n", "==================================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Your answer here\n", "# Repeat ANCOVA\n", "display(aocv)\n", "\n", "# GLM version\n", "aocv_model = smf.ols('affairs ~ gender + yearsmarried', data=affairs).fit()\n", "aocv_model.summary(slim=True)" ] }, { "cell_type": "markdown", "id": "2edcc5b7-401d-4eed-aff9-fafab8132e8b", "metadata": {}, "source": [ "Notice that the $R^2$ is the same, and that the overall pattern of results is the same too. The 'main effect' of gender is small, as is the coefficient in the linear model. Second, the years married effect is also significant, as is the coefficient of years married.\n", "\n", "You can also access an attribute of your model called `.ssr`, which is the 'sums of squares residual'. If you do this you'll see its identical to the one reported by the ANCOVA. Its the same thing, just presented differently!\n", "\n", "As a final challenge, can you plot the regression line over the raw data, and can you calculate the RMSE for this ANCOVA style model?" ] }, { "cell_type": "code", "execution_count": 15, "id": "f1933cdc-b835-4daa-90bf-ca314c826a13", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.237907507490096\n" ] }, { "data": { "image/png": "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vHkz3nvvPVxzzTWeLskl1q5dC5VKhRkzZni6FLdpukT80qVLERQUhPDwcCxYsAB79uxBTU2Nh6tzja+//hrbtm3DHXfcAZVKhR49emDOnDn497//7enSXE6r1cJkMrXYZjKZfP49DADOnTuH22+/HRaLBf/6178QFBTk6ZJcQhRFLF68GDNmzECfPn08XY5bXT62+qEePXqgoqICJSUlCA8PBwCcPXsW0dHRCA4O9nB1rpOVlYUHH3wQsbGx2LhxIwwGg6dLcpnPPvsMRUVFGDRoEADY3+B37NjhsxN1k5OTYbPZYDaboVarAcB+toWvXiA+Pz+/1RlECoUCSqXSQxW5T0pKCn744YcW286cOYMePXp4qCL32LNnDxYuXIhp06bhj3/84xVHZqQsPz8f+/fvx+HDh/HGG28AaPzj809/+hO2bduGtWvXerhC1+GIyyWSkpIwcOBAvPDCCzAajcjOzsabb76JqVOnero0l6msrMQ999yDAQMG4O9//7tPhxYA2Lp1K3766SccPHgQBw8exM0334ybb77ZZ0MLAAwfPhzx8fF48sknUVNTg7KyMqxatQo33HCDz/5Fmp6ejuLiYqxZswZWqxXZ2dl46623MHHiRE+X5nLjxo1DSUkJNmzYALPZjL1792Lz5s2YMmWKp0tzmYyMDMyZMwdPPPEElixZ4tOhBQBiY2ORmZlpfx87ePAgYmNj8cwzz/h0aAEYXNq0evVqWCwWjB07FtOmTcOIESMwe/ZsT5flMps2bUJeXh6++uorDBw4EP3797d/kW9QKpV49913IQgCJkyYgAkTJiA6OhovvPCCp0tzmeTkZKxduxY7d+5EWloa7r77bowZM8bhmRm+RK/XY/369di6dSvS0tLw1FNP4amnnsLQoUM9XZrLrFmzBhaLBStWrGjxHvbAAw94ujRyMpnoq+PERERE5HM44kJERESSweBCREREksHgQkRERJLB4EJERESSweBCREREksHgQkRERJLB4EJERESSweBCREREksHgQkR+b9myZVi2bFmnfjYnJwfXXHMNcnJynFwVEbXFty/mQETUDsuXL/d0CUTUTgwuRGS3bNky5OTkYP369fZty5cvh9FoxCOPPIIXXngBP//8MwICAnDLLbdgzpw5UKlUEEUR69atw+bNm5Gfnw+ZTIaRI0dixYoV0Gg0ePzxx1Fb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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Your answer here\n", "sns.scatterplot(data=affairs, x='yearsmarried', y='affairs', hue='gender')\n", "sns.lineplot(y=aocv_model.fittedvalues, x=affairs['yearsmarried'], color='black')\n", "\n", "# RMSE\n", "print(rmse(aocv_model.fittedvalues, affairs['affairs']))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 5 }